使用excel导入功能时日期数据变成数字的解决
在使用excel导入功能的时候,难免会导入日期类型的数据,这个时候无论使用easyexcel还是poi的导入方式,都有可能出现纯数字的日期。 1、如果输入的日期是1900年之前的,则不会变成纯数字; 2、如果是1900年之后的日期,则在导入的时候可能会变成数字: 从这张图里面就能看出来原因:excel解析时间类型的数据的时候把日期转成文本类型了。 那么这个数字代表什么呢? 这个数字与上面提到的1900年相关,因为excel中的时间是从1900年开始的,而转换成文本类型的数字则代表着1900年之后的N天,知道这个原理之后,就很好解决这个问题了: 1)如果是正常的时间类型则进行日期转换(1900年之前日期是正常的文本类型); 2)如果是纯数字则进行日期的加法运算。 这个时候需要注意一点的是:1900-02-29这一天是不存在的,但是在excel中是可以输入并转换成数字的,所以需要特殊处理一下,整体处理的代码如下:
private String judgeMemberBirthday(MemberInfo member) {
/**
* 正整数判断(不包含0)
*/
private final Pattern pattern = Pattern.compile("^[1-9]\\d*$");
/**
* excel中的起始时间
*/
private final LocalDate excelStart = LocalDate.of(1899, 12
|